local languages = {
    "English", "Arabic", "Bengali", "Hindi", "Indonesian", "Kannada",
    "Marathi", "Nepali", "Persian", "Portuguese", "Russian", "Spanish",
    "Tamil", "Telugu", "Urdu", "Thai", "Turkish", "Uzbek", "Balochi"
}

local languageCodes = {
    ["English"] = "en",
    ["Arabic"] = "ar",
    ["Bengali"] = "bn",
    ["Hindi"] = "hi",
    ["Indonesian"] = "id",
    ["Kannada"] = "kn",
    ["Marathi"] = "mr",
    ["Nepali"] = "ne",
    ["Persian"] = "fa",
    ["Portuguese"] = "pt",
    ["Russian"] = "ru",
    ["Spanish"] = "es",
    ["Tamil"] = "ta",
    ["Telugu"] = "te",
    ["Urdu"] = "ur",
    ["Thai"] = "th",
    ["Turkish"] = "tr",
    ["Uzbek"] = "uz",
    ["Balochi"] = "bal"
}

local function showLanguageSelectionDialog(context, prefs, editor, selectedLanguage, useAIMode, addEmoji)
    local dlgLayout = {
        LinearLayout,
        orientation = LinearLayout.VERTICAL,
        layout_width = "fill",
        layout_height = "fill",
        {
            Spinner,
            id = "language_spinner",
            layout_width = "fill",
            layout_height = "wrap_content",
        },
        {
            CheckBox,
            id = "use_ai_checkbox",
            text = "Use AI mode while dictation",
            layout_width = "fill",
            layout_height = "wrap_content",
            checked = useAIMode,
        },
        {
            CheckBox,
            id = "add_emoji_checkbox",
            text = "Add Emoji Automatically",
            layout_width = "fill",
            layout_height = "wrap_content",
            checked = addEmoji,
            enabled = useAIMode,
        },
        {
            Button,
            text = "OK",
            layout_width = "fill",
            layout_height = "wrap_content",
            onClick = function()
                local selected = languages[language_spinner.getSelectedItemPosition() + 1]
                editor.putString("selected_language", selected)
                editor.putInt("execution_count", 0)
                editor.commit()
                selectedLanguage = selected
                dlg.dismiss()
            end
        },
        {
            Button,
            text = "Join Telegram Channel",
            layout_width = "fill",
            layout_height = "wrap_content",
            onClick = function()
                local telegramUrl = "https://t.me/jieshuoofficial/"
                local intent = Intent(Intent.ACTION_VIEW, Uri.parse(telegramUrl))
                context.startActivity(intent)
                dlg.dismiss()
            end
        }
    }

    dlg = LuaDialog(context)
    dlg.setView(loadlayout(dlgLayout))
    dlg.setTitle("Select Language")
    dlg.show()

    language_spinner.adapter = ArrayAdapter(context, android.R.layout.simple_spinner_item, String(languages))

    use_ai_checkbox.setOnCheckedChangeListener {
        onCheckedChanged = function(view, isChecked)
            useAIMode = isChecked
            editor.putBoolean("use_ai_mode", isChecked)
            editor.commit()
            add_emoji_checkbox.setEnabled(isChecked)
        end
    }

    add_emoji_checkbox.setOnCheckedChangeListener {
        onCheckedChanged = function(view, isChecked)
            addEmoji = isChecked
            editor.putBoolean("add_emoji", isChecked)
            editor.commit()
        end
    }

    for i, lang in ipairs(languages) do
        if lang == selectedLanguage then
            language_spinner.setSelection(i - 1)
            break
        end
    end
end

return {
    showLanguageSelectionDialog = showLanguageSelectionDialog
}